/* eslint-disable object-curly-newline,prefer-destructuring,import/first */

/*   用于存放销售订单业务逻辑   */
import * as utils from '../../../../../utils/utils';
import moment from 'moment';

// ----------------------------按钮相关功能start---------------------------- //
// -------------------------新增行相关功能start------------------------- //
/**   新增行业务(销售订单业务)   */
export function doAddRowBusinessSalesOrder(addSlaveRow, props) {
  /*   返回值声明   */
  const { masterData } = props;
  /*   执行条件   */
  if (
    utils.isNotEmptyObject(masterData) &&
    utils.isNotEmptyObject(addSlaveRow)
  ) {
    /*   交货日期带到从表   */
    addSlaveRow = changeSlaveDeliverDateByMaster(masterData, addSlaveRow);
  }
  /*   返回值   */
  return addSlaveRow;
}

/**   通过主表交货日期变更从表交货日期   */
export function changeSlaveDeliverDateByMaster(masterData, addSlaveRow) {
  if (utils.isUndefinedNull(masterData.tDeliverDate)) {
    addSlaveRow.tDeliverDate = null;
  } else if (typeof masterData.tDeliverDate === 'object') {
    addSlaveRow.tDeliverDate = masterData.tDeliverDate;
  } else {
    addSlaveRow.tDeliverDate = moment(masterData.tDeliverDate);
  }
  return addSlaveRow;
}
// -------------------------新增行相关功能end  ------------------------- //
// ----------------------------按钮相关功能start---------------------------- //

// ----------------------------toolbar相关功能start---------------------------- //
// -------------------------保存相关功能start------------------------- //
/**   销售订单保存从表数据   */
export function handleSaveSlave(slaveSaveData) {
  /*   从表数据为空就直接返回   */
  if (utils.isNotEmptyArr(slaveSaveData)) {
    /*   遍历从表数据   */
    for (const each of slaveSaveData) {
      /*   产品编号有值才拼凑产品信息   */
      if (utils.isNotEmptyStr(each.sProductId)) {
        /*   产品信息赋值   */
        const sProductInfo = {
          sProductName: each.sProductName,
          sProductStyle: each.sProductStyle,
          sProductUnit: each.sProductUnit,
          sProductNo: '',
          sCustomerMaterialNo: '',
          sProductParentId: each.sParentClassify,
        };
        /*   产品信息转json   */
        each.sProductInfo = JSON.stringify(sProductInfo);
      }
    }
  }
  /*   返回值   */
  return slaveSaveData;
}
// -------------------------保存相关功能end  ------------------------- //
// ----------------------------toolbar相关功能start---------------------------- //

// ----------------------------数据修改相关功能start---------------------------- //
// -------------------------主表数据修改start------------------------- //
/**   销售订单交货日期带到从表中去   */
export function saleOrderDeliveDataFromMasterToSlave(props) {
  /*   处理数据   */
  props = saleOrderDeliveDataFromMasterToSlaveData(props);
  /*   处理渲染   */
  props = saleOrderDeliveDataFromMasterToSlaveRender(props);
  /*   返回值   */
  return props;
}

/**   销售订单交货日期带到从表中去(数据处理)   */
export function saleOrderDeliveDataFromMasterToSlaveRender(props) {
  /*   待用数据声明   */
  const { slaveData } = props;
  let { slaveShowRender } = props;
  slaveShowRender = utils.isEmptyObject(slaveShowRender) ? {} : slaveShowRender;
  /*   执行条件   */
  if (utils.isNotEmptyArr(slaveData)) {
    /*   遍历从表数据   */
    for (const each of slaveData) {
      /*   把不是合计行的从表行中的tDeliverDate都置为true(不存在的这个行则创建一行)   */
      if (!each.dataTotal && utils.isNotEmptyStr(each.sId)) {
        const arr = utils.isEmptyArr(slaveShowRender[each.sId]) ? [] : slaveShowRender[each.sId];
        arr.push('tDeliverDate');
        slaveShowRender[each.sId] = arr;
      }
    }
  }
  /*   返回值赋值   */
  props.slaveShowRender = slaveShowRender;
  props.editTableRender = true;
  /*   返回值   */
  return props;
}

/**   销售订单交货日期带到从表中去(数据处理)   */
export function saleOrderDeliveDataFromMasterToSlaveData(props) {
  /*   待用数据声明   */
  const { slaveData, masterData } = props;
  /*   从表有数据继续玩下去   */
  if (utils.isNotEmptyArr(slaveData)) {
    /*   遍历从表数据,把不是合计项的从表行的tDeliverDate的值都变成主表的tDeliverDate值   */
    for (const each of slaveData) {
      if (!each.dataTotal) {
        if (typeof masterData.tDeliverDate === 'object') {
          each.tDeliverDate = masterData.tDeliverDate;
        } else {
          each.tDeliverDate = moment(masterData.tDeliverDate);
        }
      }
    }
  }
  /*   返回值   */
  return props;
}

/**   销售订单客户名称发生改变时设置从表印件名称重新渲染   */
export function setSaleSlaveProductIdRenderByMasterCustomerId(props) {
  /*   待用数据声明   */
  const { slaveData } = props;
  let { slaveShowRender } = props;
  slaveShowRender = utils.isEmptyObject(slaveShowRender) ? {} : slaveShowRender;
  /*   执行条件   */
  if (utils.isNotEmptyArr(slaveData)) {
    /*   遍历从表数据   */
    for (const each of slaveData) {
      /*   存在印件和从表编号才执行下面的动作   */
      if (utils.isNotEmptyStr(each.sId)) {
        /*   添加所有行的都有一个sProductId   */
        const arr = utils.isEmptyArr(slaveShowRender[each.sId]) ? [] : slaveShowRender[each.sId];
        arr.push('sProductId');
        slaveShowRender[each.sId] = arr;
      }
    }
  }
  /*   返回值赋值   */
  props.editTableRender = true;
  props.slaveShowRender = slaveShowRender;
  /*   返回值   */
  return props;
}
// ----------------------------数据修改相关功能end  ---------------------------- //
// -------------------------主表数据修改end  ------------------------- //
